package com.example.nettydemo.handler;

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;

/**
 * Author: wujing
 * Date:   2025/5/13 22:39
 * Description:
 */
public class VoIpTcpServerHandler extends SimpleChannelInboundHandler {

    /**
     * 客户端连接成功
     * @param ctx 通道上下文
     */
    @Override
    public void channelActive(ChannelHandlerContext ctx)  {
        System.out.println("连接客户端成功..");
    }



    /**
     * 处理接收到的消息
     * @param channelHandlerContext 通道上下文
     * @param object 消息对象
     */
    @Override
    protected void channelRead0(ChannelHandlerContext channelHandlerContext, Object object) throws Exception {
        System.out.println("Server received: " + object.toString());
        channelHandlerContext.writeAndFlush("Hello,client!");
    }

    /**
     * 处理I/O事件的异常
     * @param ctx 通道上下文
     * @param cause 异常原因
     */
    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
        if (cause instanceof java.net.SocketException) {
            System.out.println("客户端连接已断开..");
        } else {
            System.err.println("服务器捕获到异常，但将继续运行... ");
            cause.printStackTrace();
        }
        // 不要调用ctx.close()，这样连接就不会关闭
    }
}
